import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace BaseinfoProductApi {
  /** 标签信息信息 */
  export interface BaseinfoLableinfo {
    id: number; // 序号
    lableNo: string; // 编号
    lableName: string; // 标签名称
    lableType: string; // 标签类型
    lableDescription: string; // 标签描述
    lableTemp: string; // 标签示例
    productNo: string; // 产品编码
    status: string; // 状态
    flag: boolean; // 1新增2更新3删除
  }

  /** 产品信息详情信息 */
  export interface BaseinfoProductDetails {
    id: number; // 序号
    productNo: string; // 产品编号
    useType: string; // 使用方式
    devUrl: string; // 测试地址
    prodUrl: string; // 生产地址
    useTerms: string; // 使用条件
    updateFrequency: string; // 更新频率
    memory: string; // 存储大小
    increment: string; // 增量大小
    dataDesc: string; // 数据维度
    dataScope: string; // 数据覆盖范围
    userId: number; // 用户ID
    flag: boolean; // 1新增2更新3删除
  }

  /** 产品信息信息 */
  export interface BaseinfoProduct {
    id: number; // 序号
    productName?: string; // 产品名称
    productNo: string; // 产品编号
    productPhoto: string; // 产品封面
    group: string; // 系列ID
    type: string; // 产品类型
    scope: string; // 应用领域
    priceType: string; // 计费类型
    tags: string; // 关键词
    productStatus: string; // 产品状态
    flag: boolean; // 1新增2更新3删除
    baseinfolableinfos?: BaseinfoLableinfo[];
    baseinfoproductdetails?: BaseinfoProductDetails;
    companyName?: string; // 公司名称
  }

  /** 产品信息状态 */
  export interface BaseinfoProductStatus {
    id: number; // 序号
    productName: string; // 产品名称
    productNo: string; // 产品编号
    productStatus: string; // 产品状态
    onlyProduct: true;
  }
}

/** 查询产品信息分页 */
export function getBaseinfoProductPage(params: PageParam) {
  return requestClient.get<PageResult<BaseinfoProductApi.BaseinfoProduct>>(
    '/csyt/baseinfo-product/page',
    { params },
  );
}

/** 查询产品信息详情 */
export function getBaseinfoProduct(id: number) {
  return requestClient.get<BaseinfoProductApi.BaseinfoProduct>(
    `/csyt/baseinfo-product/get?id=${id}`,
  );
}

/** 新增产品信息 */
export function createBaseinfoProduct(
  data: BaseinfoProductApi.BaseinfoProduct,
) {
  return requestClient.post('/csyt/baseinfo-product/create', data);
}

/** 修改产品信息 */
export function updateBaseinfoProduct(
  data: BaseinfoProductApi.BaseinfoProduct,
) {
  return requestClient.put('/csyt/baseinfo-product/update', data);
}

/** 删除产品信息 */
export function deleteBaseinfoProduct(id: number) {
  return requestClient.delete(`/csyt/baseinfo-product/delete?id=${id}`);
}

/** 批量删除产品信息 */
export function deleteBaseinfoProductList(ids: number[]) {
  return requestClient.delete(
    `/csyt/baseinfo-product/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出产品信息 */
export function exportBaseinfoProduct(params: any) {
  return requestClient.download('/csyt/baseinfo-product/export-excel', params);
}

// ==================== 子表（标签信息） ====================

/** 获得标签信息列表 */
export function getBaseinfoLableinfoListByProductNo(productNo: number) {
  return requestClient.get<BaseinfoProductApi.BaseinfoLableinfo[]>(
    `/csyt/baseinfo-product/baseinfo-lableinfo/list-by-product-no?productNo=${productNo}`,
  );
}

// ==================== 子表（产品信息详情） ====================

/** 获得产品信息详情 */
export function getBaseinfoProductDetailsByProductNo(productNo: number) {
  return requestClient.get<BaseinfoProductApi.BaseinfoProductDetails>(
    `/csyt/baseinfo-product/baseinfo-product-details/get-by-product-no?productNo=${productNo}`,
  );
}

/** 处理产品状态 */

/** 修改产品信息 */
export function updateBaseinfoProductStatus(
  data: BaseinfoProductApi.BaseinfoProductStatus,
) {
  return requestClient.put('/csyt/baseinfo-product/update', data);
}
